// list vuex 模块小仓库

import { reqGoodsInfo,reqAddOrUpdateShopCart } from '@/api'
import {getUUID} from '@/utils/uuid_token'

const state = {
  detailsData: {},
  // 游客临时身份
  // uuid_token:uuid(), 这样写每次都会调用uuid，都会改变
  // 判断本地存储有没有
  uuid_token:getUUID(), //要求不能重复，也不能每次都改变
}
const mutations = {
  DETAILSDATA(state, detailsdata) {
    state.detailsData = detailsdata
  },
}
const actions = {
  async getdetails({ commit }, skuId) {
    let result = await reqGoodsInfo(skuId)
    if (result.code == 200) commit('DETAILSDATA', result.data)
  },

  // 将产品添加到购物车，接受从接口reqAddOrUpdateShopCart传来的数据，而reqAddOrUpdateShopCart 接口里面没有存储数据，主要是传递接口中的参数
  // 前面dispatch使用{}来传递的，所以也用对象来接受
  // { commit }, 不可以缺
  async getAddOrUpdateShopCart({ commit }, {skuId,skuNum}){
    // 前台将数据传递给服务器，服务器并没有返回其他的数据，所以不需要上面两步操作
    let result = await reqAddOrUpdateShopCart(skuId,skuNum)
    // 此时需要返回是否成功的接到了接口
    if(result.code == 200)
     return "ok";
    else
      return Promise.reject(new Error('faile'));
      // 代表请求失败，返回promise，前面接受也要用promise来接受

  }
}
const getters = {
  // 不加{}当state为undifined时，存在错误
  categoryView(){
    return state.detailsData.categoryView || {};
  },
  skuInfo(){
    return state.detailsData.skuInfo || {};
  },
  spuSaleAttrList(){
    return state.detailsData.spuSaleAttrList || {};
  },
}

export default {
  namespaced: true, //命名空间是防止仓库中出现同名的情况
  state,
  mutations,
  actions,
  getters,
}
